#include "sonido.h"

Sonido::Sonido(const QString& ruta, bool repetir)
{	
	sonido = NULL;
    pausado = false;
    this->nombreFichero = ruta;
    this->repetir = repetir;    
}

Sonido::~Sonido()
{
	limpiar();
}

void Sonido::prepararSonido(const QString& ruta)
{   
    limpiar();
    sonido = new Phonon::MediaObject();
    sonido->setCurrentSource(Phonon::MediaSource(ruta));
    sonido->currentSource().setAutoDelete(true);   
    dispositivo = new Phonon::AudioOutput(Phonon::GameCategory);  
    path = Phonon::createPath(sonido, dispositivo); 
    if (repetir) {
        connect(sonido, SIGNAL(finished()), this, SLOT(repetirSonido()));
    }
}

void Sonido::repetirSonido() {
    sonido->clear();
    sonido->setCurrentSource(Phonon::MediaSource(nombreFichero));  
    sonido->play();
}

void Sonido::reproducir()
{	    
    if (!pausado) {
        prepararSonido(nombreFichero);   
    }
    pausado = false;
	sonido->play();    
}

void Sonido::pausar()
{    
    if (sonido == NULL) {
        return;
    }
    sonido->pause();
    pausado = true;
}

void Sonido::parar()
{
    if (sonido != NULL) {
        sonido->stop();
    }
    limpiar();
    pausado = false;
    repetir = false;
}

void Sonido::setVolumen(float volumen)
{
	if (sonido == NULL) {
		return;
	}	
	this->volumen = volumen;
}

QString Sonido::getRuta()
{
    return nombreFichero;
}

void Sonido::limpiar()
{
     if (sonido != NULL) {
        sonido->clear();
        delete sonido;  
        delete dispositivo;
        sonido = NULL;
        dispositivo = NULL;
    }       
}